/*
 * Vendedor.java
 *
 */

package ar.com.educacionit.vehiculos.entidades;

import ar.com.educacionit.base.entidades.Persona;
import ar.com.educacionit.vehiculos.util.EducacionITSessionManager;
import java.io.Serializable;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author Sebastian S. Sanga <SebastianSanga@educacionIT.com.ar>
 */
public class Vendedor extends Persona implements Serializable{
    
    /** Creates a new instance of Vendedor */
    public Vendedor() {
    }
    
    public Vendedor(String nombre, String apellido, String nroDocumento, int cantAutosVendidos) {
        super(nombre,apellido,nroDocumento);
        setCantAutosVendidos(cantAutosVendidos);
    }    
    
    // Atributos
    private int cantAutosVendidos;
    
    @Override
    public String toString(){
        return getApellido() + ", " + getNombre();
    }    

    public int getCantAutosVendidos() {
        return cantAutosVendidos;
    }

    public void setCantAutosVendidos(int cantAutosVendidos) {
        this.cantAutosVendidos = cantAutosVendidos;
    }
    
    public static List obtenerTodos() throws Exception
    {
        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Realiza la consulta
        List<Comprador> losComprador = session.createQuery("ar.com.educacionit.vehiculos.entidades.Vendedor").list();

        // Cierra la sesion de trabajo
        session.close();

        // Retorna los concesionarios
        return losComprador;

    }

    public void insertar() throws HibernateException
    {

        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Genera una transaccion
        Transaction tx = session.beginTransaction();

        // Inserta el concesionario
        session.save(this);

        // Compromete los cambios
        tx.commit();

        // Cierra la sesion de trabajo
        session.close();

    }

    public void actualizar() throws HibernateException
    {
        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Genera una transaccion
        Transaction tx = session.beginTransaction();

        // Actualiza el concesionario
        session.update(this);

        // Compromete los cambios
        tx.commit();

        // Cierra la sesion de trabajo
        session.close();

    }

    public void eliminar() throws HibernateException
    {
        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Genera una transaccion
        Transaction tx = session.beginTransaction();

        // Elimina el concesionario
        session.delete(this);

        // Compromete los cambios
        tx.commit();

        // Cierra la sesion de trabajo
        session.close();
    }
    
}
